package com.thp.bigdata.provinceflow;

import java.util.HashMap;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;

public class ProvincePartitioner extends Partitioner<Text, FlowBean>{

	
	public static HashMap<String, Integer> provinceDict = new HashMap<String, Integer>();
	
	
	static {
		provinceDict.put("136", 0);
		provinceDict.put("137", 1);
		provinceDict.put("138", 2);
		provinceDict.put("139", 3);
	}
	
	/**
	 * 返回的分区的数量是跟HashMap设置的k-v对的数量有关
	 * 这时  job.setNumReducerTask()  就需要根据这里去设置，不能随便写，也不能不写。
	 * 必须要跟这里对应上。
	 */
	@Override
	public int getPartition(Text key, FlowBean value, int numPartitions) {
		String prefix =  key.toString().substring(0, 3);
		Integer pronviceId = provinceDict.get(prefix);
		return pronviceId == null ? 4 : pronviceId;
	}

}
